package edu.cth.ai23;

import java.awt.Graphics;

public interface IProblem {
    public abstract void draw(Graphics g);
    public abstract void scramble();
    public abstract void reset();
    public abstract void copyValues(IProblem problem);
    public abstract IProblem getProblemCopy();
    public abstract int getSearchDepth();
    public abstract boolean getGreed();
    public abstract int evaluate();
    //public abstract int getSolvedEvaluation();
    public abstract void handleKeyPress(int keyCode);
    public abstract Integer[] getNoOfMoves(int previousIndex);
    public abstract void move(int moveIndex, IProblem problem);
    public abstract void moveSequence(Integer[] moveIndexes, IProblem problem);
    public abstract void reverseMove(int moveIndex, IProblem problem);
    public abstract void reverseMoveSequence(Integer[] moveIndexes, IProblem problem);

    public abstract String getMoveName(int moveIndex);
}